package com.lxj.mapper;

import com.lxj.domain.SysPermission;
import com.lxj.dto.SysPermissionDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author lxj
 * @date 2021/6/16 15:43
 */
public interface SysPermissionMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(SysPermission record);

    int insertSelective(SysPermission record);

    SysPermission selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysPermission record);

    int updateByPrimaryKey(SysPermission record);

    /**
     * 查询所有
     * @return
     */
    List<SysPermission> selectAll();

    /**
     * 分页查询
     * @param dto
     * @return
     */
    List<SysPermission> selectByPage(SysPermissionDto dto);

    /**
     * 根据父id统计子节点数量
     * @param id
     * @return
     */
    Integer selectCountByParentId(Integer id);

    /**
     * 使用角色的id 查询权限的id
     * @param roleId
     * @return
     */
    List<Integer> selectPermIdByRoleId(Integer roleId);

    /**
     * 使用角色的id 删除中间表的数据
     * @param roleId
     * @return
     */
    int deleteByRoleIds(Integer roleId);

    /*
     * 新增新的中间表的数据
     */
    int insertNewRole(@Param("roleId") Integer roleId, @Param("permsIds") Integer[] permsIds);

    /**
     * 使用用户的id 和 类型查询 对应的权限数据
     * @param id
     * @param types
     * @return
     */
    List<SysPermission> selectPermsByUserIdAndType(@Param("id") Integer id,@Param("types")  List<Integer> types);
}